# -*- coding: utf-8 -*-
from openerp import models, fields, api
import json

class DetailRecord(models.Model):
    _name = 'nmbw800.detailrecord'#不能用大写？
    #这里的变量类型必须是与json，go里面的的类型是一致的
    #如果用interger来代表Addr和pignum会溢出，一个是int32 一个是uint32（go）
    addr=fields.Char(string='控制器地址',required=True)#控制器地址
    pignum=fields.Char(string='猪耳标号',required=True)#猪耳标号
    date=fields.Char('日期',required=True)#日期
    amount=fields.Float(string='可吃总量',required=True, store=True)#可吃总量
    actual=fields.Float(string='实际吃量',required=True, store=True)#实际吃量

    #通过用xml rpc 推送json新增一条记录
    @api.model
    def addItemByJson(self,jsonList):
        #将golang传过来的结构体json，解析
        jj=json.loads(jsonList)
        for j in jj['List']:
            j['Addr']="机器号:"+str(j['Addr'])#在控制器地址前面加一个标志
            j['PigNum']="母猪号:"+str(j['PigNum'])
            #符合这条json的数据库中的条数
            thelen = len(self.search([('addr','=',j['Addr']),('date','=',j['Date'])]))
            #如果数据库中本来就没一条符合就新建一条
            if thelen == 0:
                # print j['Actual']
                # print j['Addr']
                # print j['PigNum']
                # print j['Date']
                # print j['Amount']

                self.env['nmbw800.detailrecord'].create({'addr':j['Addr'],
                                                 'pignum':j['PigNum'],
                                                 'date':j['Date'],
                                                 'amount':j['Amount'],
                                                 'actual':j['Actual']
                                                })
            #如果有符合的就更新他
            if thelen > 0:
                self.search([('addr','=',j['Addr']),('date','=',j['Date'])]).write({'addr':j['Addr'],
                                                 'pignum':j['PigNum'],
                                                 'date':j['Date'],
                                                 'amount':j['Amount'],
                                                 'actual':j['Actual']
                                                })
        return "odoo：成功存储详细下料记录"